
# Makefile

# Variables
CC = gcc -g
CFLAGS = -O4 -W -Wall
CPPFLAGS = -I.
LDLIBS = -lm
AR = ar rcs

# gestion des repertoires
SRCDIR = ./SRC
OBJDIR = ./OBJ
BINDIR = ./BIN
LIBDIR = ./LIB

# Variables propres a cette applie
MAIN = $(BINDIR)/main
SRC = $(wildcard $(SRCDIR)/*.c)
OBJ = $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
LIB = $(LIBDIR)/libgraphe.a $(LIBDIR)/libliste.a

# cible principale
all : $(MAIN)

# Regle principale avec l'edition de lien
$(MAIN) : $(OBJ) $(LIB) $(BINDIR) 
	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $(OBJ) $(LDLIBS) 

# Regle de construction des .o
$(OBJDIR)/%.o : $(SRCDIR)/%.c $(SRCDIR)/%.h $(OBJDIR)
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $(OBJDIR)/$*.o 

# Regle de construction des .o
$(OBJDIR)/%.o : $(SRCDIR)/%.c $(OBJDIR)
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $(OBJDIR)/$*.o

# Regle de construction lgraphe.a
$(LIBDIR)/libgraphe.a : $(OBJDIR)/graphe.o
	$(AR) $@ $^ 

# Regle de construction lliste.a
$(LIBDIR)/libliste.a : $(OBJDIR)/liste.o
	$(AR) $@ $^ 

$(OBJDIR) : 
	mkdir $(OBJDIR)

$(BINDIR) : 
	mkdir $(BINDIR)

$(LIBDIR) : 
	mkdir $(LIBDIR)

essai : 
	@echo $(SRC) ;
	@echo $(OBJ)

# Nettoyage des fichiers intermediaires
clean : 
	rm $(OBJ); rm $(LIB)

# suppression de tous les fichiers issus de la compilation
veryclean : clean
	rm $(MAIN)
